package com.zmn.plat.persistence.interfaces.funswitch;


import com.zmn.common.dto.StatusDTO;
import com.zmn.plat.model.entity.funswitch.PublicBaseCodeMap;
import com.zmn.plat.model.entity.funswitch.PublicBaseCodeMapQuery;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;


public interface BaseCodeMapMapper {


    /**
     * 描述: BaseCodeMap key 查询数据
     *
     * @param mapId
     * @return: BaseCodeMap
     */
    PublicBaseCodeMap findByKey(Integer mapId);

    /**
     * 描述:查询最大key
     *
     * @return: mapId
     */
    Integer findKeyForMax();


    /**
     * 描述: 根据查询条件分页查询
     *
     * @param query
     * @return: List<BaseCodeMap>
     */
    List<PublicBaseCodeMap> listPageByQuery(PublicBaseCodeMapQuery query);

    /**
     * 描述: 根据查询条件查询所有数据
     *
     * @param query
     * @return: List<BaseCodeMap>
     */
    List<PublicBaseCodeMap> listByQuery(PublicBaseCodeMapQuery query);

    /**
     * 描述: BaseCodeMap 数据
     *
     * @return: List<BaseCodeMap>
     */
    List<PublicBaseCodeMap> listAll();

    /**
     * 描述: 根据查询条件统计满足条件的数据条数
     *
     * @param query
     * @return: Integer
     */
    Integer countByQuery(PublicBaseCodeMapQuery query);

    /**
     * 描述: 根据主键修改数据
     *
     * @param baseCodeMap
     * @return: 执行结果码
     */
    Integer updateByKey(PublicBaseCodeMap baseCodeMap);

    /**
     * 描述: 根据主键修改码表的状态
     *
     * @param baseCodeMap
     * @return: 执行结果码
     */
    Integer updateStatus(PublicBaseCodeMap baseCodeMap);

    /**
     * 描述: 批量修改状态
     *
     * @param dto
     * @return: 执行结果码
     */
    Integer updateStatusBatch(StatusDTO dto);

    /**
     * 描述: 新增数据
     *
     * @param baseCodeMap
     * @return: 执行结果码
     */
    Integer insert(PublicBaseCodeMap baseCodeMap);

    /**
     * 描述: 根据主键删除数据
     *
     * @param mapId
     * @return: 执行结果码
     */
    Integer deleteByKey(Integer mapId);

    /**
     * 根据名字查询状态
     * '状态：1停用，2启用'
     * @param name
     * @return 1 or 2
     */
    @Select("SELECT STATUS FROM base_code_map WHERE NAME = #{name}")
    Integer getStatusByName(@Param("name") String name);
}